Scroll to navigation

GETTY(1) Manuel de l'utilisateur Linux GETTY(1)

NOM

getty - Configurer le mode terminal, la vitesse et la discipline de ligne

SYNOPSIS

/etc/getty [-d fichier_défaut] [-a] [-h] [-r délai] [-t timeout] [-w waitfor] ligne [vitesse [type [lined]]]
/etc/getty -c fichier_gettydefs

DESCRIPTION

Getty est le deuxième des trois programmes (init(1m), getty(1m), et login(1m)), utilisés par le système pour permettre aux utilisateurs de se connecter. Getty est appelé par init(1m) pour :

1.
Ouvrir les lignes tty et les configurer.
2.
Afficher l'invite de connexion, et saisir le nom d'utilisateur.
3.
Lancer un processus de connexion (login) pour l'utilisateur.

La procédure précise suivie par getty est la suivante : En premier lieu, getty examine sa ligne de commande. Si aucune erreur n'est détectée, getty lit le fichier par défaut, normalement /etc/conf.getty, pour déterminer certaines valeurs de démarrage (/etc/conf.getty s'il est compilé avec l'option FSSTND). Les valeurs données dans le fichier par défaut (qui peut être changé par l'argument optionnel -d fichier_défauts) l'emportent sur celles de la ligne de commande. Getty ouvre alors la ligne en lecture/écriture et désactive le tampon stdio. Si une initialisation a été spécifiée, elle est exécutée (voir INITIALISATION DE LA LIGNE)

Après l'initialisation, la ligne est fermée puis réouverte. Cette fois, par contre, la ligne est ouverte en mode bloc, de sorte que le périphérique ne reste pas occupé. La détection d'une porteuse (carrier) permettra d'ouvrir la ligne.

Ensuite, getty affiche la bannière de connexion, habituellement /etc/issue) et l'invite de connexion (login) getty lit le nom d'utilisateur et appelle login(1m) avec ce nom comme argument. Pendant qu'il lit le nom, getty tente d'adapter le système à la vitesse du terminal utilisé, et configure aussi certains paramètres du terminal (voir termio(7)) pour se conformer à la procédure de connexion de l'utilisateur.

Le périphérique tty utilisé par getty est déterminé par l'argument ligne. Getty utilise la chaîne /dev/line comme nom du périphérique qu'il va utiliser. À moins que getty soit invoqué avec le drapeau -h (ou que HANGUP=NO soit spécifié dans le fichier par défaut), il forcera à raccrocher la ligne, en mettant sa vitesse à zéro. -r délai sur la ligne de commande (ou WAITCHAR=YES et DELAY=délai dans le fichier par défaut) forcera getty à attendre un (seul) caractère sur la ligne, puis à attendre délai secondes avant de continuer. Si vous ne désirez aucun délai, utilisez -r0. -w attendue sur la ligne de commande (ou WAITFOR=attendue dans le fichier par défaut) forcera getty à attendre la chaîne attendue sur la ligne avant de continuer. -t timeout sur la ligne de commande (ou TIMEOUT=timeout dans le fichier par défaut) forcera getty à terminer si aucun nom d'utilisateur n'est accepté pendant les timeout secondes suivant l'affichage de l'invite de connexion.

L'argument vitesse est une étiquette qui correspond à une entrée dans le fichier /etc/gettydefs (voir gettydefs(5)). Cette entrée définit à getty la vitesse initiale (en bauds) et la configuration tty, l'invite de connexion à utiliser, la vitesse finale, et la configuration tty, et un pointeur sur une autre entrée à essayer si jamais l'utilisateur signale que la vitesse n'est pas correcte. Ça se fait en envoyant un caractère <break> (en réalité, une séquence de caractères). Sous certaines conditions, un retour-chariot remplit le même rôle. C'est habituellement le cas quand getty est configuré avec une vitesse plus élevée que le terminal ou le modem. Getty parcourt le fichier gettydefs séquentiellement, en cherchant une entrée correspondant à la vitesse. Si aucune vitesse n'est donnée, ou si aucune entrée correspondante n'est trouvée, la première entrée de /etc/gettydefs est utilisée par défaut. Dans le cas où le fichier gettydefs n'est pas accessible, une entrée par défaut spécifiée à la compilation est utilisée.

L'argument type est une chaîne qui donne le nom du type de terminal relié à la ligne. Le type devrait être un nom de terminal valide, apparaissant dans la base de données termcap(7). Getty utilise cette valeur pour déterminer comment effacer l'écran. Il recopie aussi le contenu de cette valeur dans la variable d'environnement TERM.

L'argument lined est une chaîne décrivant la discipline de ligne à utiliser sur la ligne. La valeur par défaut est LDISC0.

Comme signalé plus haut, getty affiche l'invite de connexion puis lit le nom d'utilisateur. Si un caractère nul est reçu, il est pris comme venant de l'appui sur la touche <break> (ou sur Entrée / Retour-chariot) par l'utilisateur, pour indiquer que la vitesse est mauvaise. Cela force getty à passer à la vitesse suivante de la série (définie dans /etc/gettydefs).

Le nom d'utilisateur est terminé par un caractère saut de ligne (LF) ou retour chariot (CR). Si c'est un retour chariot, le système est configuré pour transformer ceux-ci en sauts de ligne (voir ioctl(2)).

Le nom d'utilisateur est vérifié. S'il ne contient que des majuscules, le système est configuré pour transformer toutes les (futures) majuscules en minuscules.

Une option de vérification est fournie pour tester le fichier gettydefs. Quand getty est invoqué avec l'option -c gettydefs, il examine le fichier appelé gettydefs et affiche (sur la sortie standard) les valeurs qu'il lit. Si des erreurs d'analyse surviennent (dues à des erreurs dans la syntaxe du fichier gettydefs), elles sont signalées.

FICHIER PAR DÉFAUT

Au démarrage, getty cherche le fichier /etc/conf.getty.ligne, (ou, s'il ne le trouve pas, /etc/conf.getty), et, s'il le trouve, lit le contenu des lignes de la forme


NOM=valeur

Cela permet d'avoir certaines fonctionnalités de getty configurables au démarrage, sans recompilation. Les chaînes NOM reconnues, et leurs valeurs correspondantes, sont les suivantes :

Positionne le nom de noeud (affiché par @S -- voir SUBSTITUTIONS DE L'INVITE) à nom. La valeur par défaut est la valeur nom_de_noeud retournée par la fonction uname(3).

Positionne la valeur affichée par le paramètre @V (voir SUBSTITUTIONS DE L'INVITE) à chaîne. Si chaîne commence par un caractère '/', elle est prise comme le chemin complet d'un fichier, et @V représente le contenu de ce fichier. Par défaut c'est /proc/version.

Positionne le nom du programme de connexion (login) à nom. Par défaut c'est /bin/login (voir login(1m)). S'il est utilisé, nom doit être le chemin complet du programme que getty doit appeler au lieu de /bin/login. Notez que ce programme est appelé, comme /bin/login, avec le nom d'utilisateur pour seul argument.

Si elle est définie, chaîne est une séquence attendue/envoyée qui est utilisée pour initialiser la ligne avant que getty ne tente de l'utiliser. Cette chaîne a la même forme que celles utilisées dans le fichier L.sys d' uucp(1). Pour plus de détails, voir INITIALISATION DE LIGNE. Par défaut, aucune initialisation n'est faite.

Au lancement, getty affiche par défaut, comme bannière de connexion, le contenu du fichier /etc/issue. Si ISSUE est défini comme chaîne, cette chaîne est affichée en remplacement. Si chaîne débute par un '/', chaîne est considérée comme le chemin complet du fichier à utiliser à la place de /etc/issue.

Si valeur est NO, getty n'essaiera pas d'effacer l'écran avant d'afficher la bannière et l'invite de connexion. Par défaut, il efface l'écran.

Si valeur est NO, getty NE raccrochera PAS la ligne pendant son lancement. Analogue à l'argument -h sur la ligne de commande.

Si valeur est YES, getty attendra un simple caractère sur la ligne avant de continuer. C'est utile pour les connexions par modem, avec des modems qui forcent le signal CD (=porteuse détectée) systématiquement, pour empêcher getty de négocier indéfiniment avec le modem.

Utilisé en conjonction avec WAITCHAR, cela ajoute un délai de secondes après l'acceptation du caractère, avant d'autoriser getty à continuer. L'utilisation des deux paramètres WAITCHAR et DELAY ont le même effet que -rdélai sur la ligne de commande. Si WAITCHAR est donné sans DELAY, le résultat est le même que de mettre -r0 sur la ligne de commande. Par défaut, getty n'attend pas de caractère.

Comme avec l'argument de ligne de commande -t timeout, force getty à terminer si aucun nom d'utilisateur n'est accepté avant que nombre secondes se soient écoulées à partir de l'affichage de l'invite de connexion. Par défaut, il attend indéfiniment.

Si elle est définie, chaîne est une séquence attendue/envoyée (comme pour INIT) pour guider getty dans l'établissement d'une connexion. chaîne peut être définie à DEFAULT, ce qui substituera la chaîne prédéfinie :


CONNECT\s\A\r\n

L'échappement \A marque la place où les chiffres donnant la vitesse seront affichés. Voir CONNEXION ET CONFIGURATION AUTOMATIQUE DE LA VITESSE pour plus de détails. Par défaut il n'y a pas de séquence de discussion (chat).

Ce paramètre est similaire à WAITCHAR, mais il définit une chaîne de caractères attendue. Getty attendra la réception de chaîne avant d'afficher l'invite de connexion. Il vaut mieux utiliser ce paramètre en même temps que CONNECT, comme dans l'exemple suivant :


WAITFOR=RING
CONNECT="" ATA\r CONNECT\s\A

Cela va forcer getty à attendre la chaîne RING, puis n'attendre rien, envoyer ATA suivi d'un retour-chariot, puis attendre une chaîne de type CONNECT 2400, auquel cas, getty se configurera à 2400 bauds. Par défaut, getty n'attend pas de chaîne de caractères.

Uugetty utilise ce paramètre pour verrouiller un deuxième périphérique, en plus de celui auquel il est attaché. C'est prévu pour les systèmes qui utilisent deux noms de périphérique différents pour le même port série, par exemple /dev/tty1A et /dev/tty1a, l'un utilisant le contrôle modem, l'autre pas. Voir la section sur UUGETTY pour plus de détails. Par défaut, il n'y a pas de deuxième fichier de verrouillage.

Getty utilise ce paramètre pour spécifier un périphérique différent pour l'initialisation du modem. Si l'option WAITFOR est utilisée, WAITFOR sera exécuté aussi sur cette ligne. C'est nécessaire pour les systèmes qui exercent le verrouillage entre deux lignes.

Si valeur vaut YES , la procédure de rappel est configurée. Elle est utilisée en conjonction avec WAITFOR et CONNECT pour négocier les appels entrants. L'action par défaut est de connecter seulement si la ligne sonne de une à trois fois, est raccrochée puis est rappelée dans les 60 secondes suivant le premier appel. MINRBTIME et MAXRBTIME spécifient les durée minimale et maximale séparant les deux appels. INTERRING spécifie la durée maximale entre deux sonneries du même appel. MINRINGS et MAXRINGS spécifient les nombres minimum et maximum de sonneries pour le premier appel.

Getty utilise cette ligne pour programmer les horaires de connexion autorisés. Chaque intervalle est de la forme JdS:HR:MIN-JdS:HR:MIN. JdS est le jour de la semaine (0 = Dimanche, 1 = Lundi, ... 6 = Samedi), HR:MIN est l'horaire (heures, minutes). Si l'heure courante est dans l'un de ces intervalles, la séquence INIT (s'il y en a une) est envoyée et getty continue de tourner jusqu'à l'heure de fin. Sinon, la séquence OFF est envoyée et getty "dort" jusqu'à la prochaine heure de démarrage.

Cette ligne est identique à la ligne INIT, sauf qu'elle est envoyée uniquement quand la ligne est coupée (OFF) par le programmateur SCHED.

Cette ligne spécifie le chemin du mailer FidoNet (habituellement ifcico). Non définie par défaut. En installant un mailer FidoNet, vous devriez aussi positionner EMSI à yes. Quand un appel entrant FidoNet est reçu, la chaîne tsync ou yoohoo est passée au mailer FidoNet comme unique option de ligne de commande si deux séquences TSYNC ou YOOHOO sont reçues. Si EMSI est positionnée à yes, la chaîne EMSI entière (commençant au premier astérisque, et finissant au retour chariot final -exclu-) est passée comme unique option de ligne de commande.

Si valeur=yes, intercepte les séquences FidoNet EMSI en entrée.

Le nom du fichier de configuration par défaut peut être changé en spécifiant -d fichier_défaut sur la ligne de commande. Si fichier_défaut commence par un slash, c'est considéré comme le chemin complet du fichier à utiliser. Sinon, c'est supposé être un fichier régulier, et getty utilise le chemin /etc/conf.defaults_file ou /etc/conf .defaults_file s'il est compilé avec la directive de respect de FSSTND (FileSystem STaNDard).

SUBSTITUTIONS D'INVITE

Quand getty affiche la bannière de connexion (habituellement /etc/issue), ou l'invite de connexion, il reconnaît plusieurs caractères d'échappement. Quand l'un de ces caractères est trouvé, sa valeur est substitué dans la sortie produite par getty. Les caractères d'échappement reconnus sont :

\\
Backslash (\).
\b
Effacement-arrière (Backspace) (^H).
\c
Placé à la fin d'une chaîne, empêche le passage à la ligne suivante après la chaîne.
\f
Saut de page (Formfeed) (^L).
\n
Saut de ligne (^J).
\r
Retour Chariot (^M).
\s
Une espace simple (' ').
\t
Tabulation horizontale (^I).
\nnn
Affiche le caractère ASCII dont la valeur décimale est nnn. Si nnn commence par 0, la valeur est lue en octal. Si elle commence par 0x, elle est lue en hexadécimal.

De plus, un simple backslash à la fin d'une ligne ignore le saut de ligne adjacent, permettant la continuation des lignes.

Certains paramètres @car sont également reconnus. Ces paramètres, et les valeurs qui leur sont substituées, sont :

@B
Le débit courant, en bauds (évalué au moment où @B est vu).
@D
La date courante, format MM/JJ/AA.
@L
La ligne à laquelle getty est attaché.
@S
Le nom de noeud système.
@T
L'heure courante, format HH:MM:SS (24 heures) .
@U
Le nombre d'utilisateurs connectés. C'est le nombre d'entrées dans le fichier /etc/utmp qui ont un champ ut_name non-nul.
@V
La valeur de VERSION, telle que donnée dans le fichier de configuration par défaut.

Pour afficher un simple caractère '@', utilisez '\@' ou

INITIALISATION DE LA LIGNE

L'un des gros avantages de getty (selon l'auteur, du moins) est sa capacité à initialiser sa ligne avant de s'en servir. C'est certainement beaucoup plus utile avec des lignes modem, pas des terminaux, même si l'initialisation de terminaux n'est pas complètement hors-sujet.

L'initialisation de la ligne est effectuée juste après son ouverture, et avant la gestion des options WAITCHAR et WAITFOR. L'initialisation est effectuée en plaçant une ligne


INIT=chaîne

dans le fichier de configuration par défaut. Chaîne est une série d'un ou plusieurs champs de la forme


attendu [ envoyé [ attendu [ envoyé ] ] ... ]

Cela ressemble aux séquences attendues/envoyées utilisées dans le fichier UUCP L.sys, avec les exceptions suivantes : AUCUN retour chariot n'est ajouté automatiquement aux séquences envoyées. Si vous voulez envoyer un Retour Chariot, il faut le montrer explicitement avec '\r'.

Getty supporte des sous-champs dans le champ 'attendu', comme UUCO, sous la forme


attendu[-envoyé-attendu]...

Tous les caractères d'échappement (ceux commençant par '\' listés dans la section SUBSTITUTIONS D'INVITE sont valides dans les champs attendus et envoyés. De plus, les caractères d'échappement suivants sont reconnus :

\p
insère une pause d'une seconde.
\d
insère une pause de deux secondes.
\K
envoie un Arrêt (Break) de 0,25 s (interruption de porteuse).
\Tnnn
Passe le timeout par défaut (habituellement 30 s) à la valeur indiquée par la valeur nnn. La valeur nnn peut être en décimal, octal ou hexadécimal ; voir l'usage de \nnn dans SUBSTITIONS D'INVITE.

Notez que pour ces caractères d'échappement supplémentaires, aucun caractère réel n'est envoyé.

CONNEXION ET RÉGLAGE AUTOMATIQUE DU DÉBIT

Getty entreprend une séquence de "discussion" (chat) pour établir une connexion propre. Le meilleur usage de cette caractéristique est de regarder le message CONNECT envoyé par le modem et de régler le débit de ligne à la valeur donnée dans ce message (par exemple CONNECT 2400).

La [syntaxe ? : NdT] du script de connexion chat est exactement la même que celle du script INIT (voir INITIALISATION DE LIGNE), avec en plus :

\A
Marque la place où le débit (en bauds) apparaîtra. Cette marque recouvrira tous les chiffres 0-9 trouvés à cet endroit du script, passera le débit à cette valeur si c'est possible.

Pour cela, le réglage automatique du débit (autobauding) est "mis en route" en plaçant la marque dans le script chat. Par exemple, la définition :


CONNECT=CONNECT\s\A

reconnaîtra la chaîne CONNECT 1200 et forcera getty à passer son débit à 1200 bauds, en 3 étapes :

1.
Après avoir reconnu la valeur 1200, getty essaiera de trouver une entrée étiquetée 1200 dans le fichier gettydefs. Si une entrée correspondante est trouvée, les valeurs indiquées sont utilisées. Si aucune entrée ne correspond, alors
2.
Les valeurs gettydefs courantes sont modifiées pour utiliser le débit reconnu (par exemple 1200). Malgré tout, si la valeur reconnue est invalide, alors
3.
Getty envoie (log) un message d'avertissement et reprend une exécution normale. Cela permet à la pratique de la bascule entre des entrées liées du fichier gettydefs de fonctionner normalement [même si les premiers débits ne sont pas acceptés, NdT].

UUGETTY

Uugetty a un comportement identique à getty, excepté que uugetty est prévu pour créer et utiliser les fichiers de verrou utilisés par la famille UUCP (uucp(1), cu(1) et autres). Cela empêche plusieurs processus d'utiliser la même ligne tty.

Quand uugetty démarre, s'il voit un fichier de verrou sur la ligne qu'il avait l'intention d'utiliser, il utilise le PID du fichier verrou pour vérifier si un processus actif tient le verrou. Si ce n'est pas le cas, uugetty supprime le fichier verrou et continue. Si un processus valide est trouvé, uugetty dort jusqu'à ce que le processus déverrouille la ligne, puis il se termine, forçant init(1m) à relancer (spawn) un nouvel uugetty. Une fois qu'il n'y a plus de processus en conflit, uugetty récupère la ligne en créant son propre fichier de verrou avant d'afficher l'invite de connexion.

Uugetty ne verrouille normalement que la ligne qu'il utilise. Sur les systèmes comportant deux noms de périphérique correspondant au même port (par exemple, quand un périphérique utilise le contrôle modem, et pas l'autre), placez une ligne de la forme


ALTLOCK=ligne

ligne est le fichier par défaut. Par exemple, si uugetty est sur /dev/tty1a, et vous voulez qu'il verrouille aussi /dev/tty1A, utilisez la ligne ALTLOCK=tty1A dans le fichier de configuration par défaut.

Pendant qu'il attend une porteuse, Uugetty vérifie les fichiers de verrou toutes les 30 secondes. Si des verrous sont trouvés, uugetty se termine et init relance un autre getty. Cela permet au modem d'être réinitialisé après qu'un autre processus l'a utilisé.

FICHIERS

/etc/conf.getty[.ligne]
Contient la configuration de démarrage. Noter que uugetty utilise /etc/conf.uugetty[.ligne].
/etc/gettydefs
Contient les débits et paramètres tty à utiliser.
/etc/issue
La bannière de connexion par défaut.
/bin/login
Le programme de connexion appelé par défaut une fois qu'un nom d'utilisateur est saisi.

AUTEURS

Getty_ps dans sa forme courante :
Kris Gleason  <gleasokr@boulder.colorado.edu>

Le getty_ps d'origine : Paul Sutcliffe, Jr. <paul@devon.lns.pa.us> UUCP: ...!rutgers!devon!paul
Routines de réglage automatique du débit adaptées du code soumis par Mark Keating <...!utzoo!censor!markk>

VOIR AUSSI

init(1), login(1), uucp(1), ioctl(2), uname(3), gettydefs(5), utmp(5), termio(7), mgetty(8)

TRADUCTION

Guillaume Allègre, <Guillaume.Allegre@mail.dotcom.fr>, avril 1999.

Il est possible que cette traduction soit imparfaite ou périmée. En cas de doute, veuillez vous reporter au document original en langue anglaise fourni avec le programme.

5 mai 1999 GETTY